编程时,照着别人的代码敲进去有效率吗?
【公众号回复“1024”,送你一个特别推送】
原文作者:程序员客栈
www.zhihu.com/question/297309123/answer/568366310
这个问题我可以肯定负责地回答,照着别人代码敲一遍除了让你看得仔细点,练了打字外其它并没有任何帮助——和自己盯着代码仔细看是一样的,这样的学习效率是不高的。
首先得为什么会有这个问题,因为刚刚学习编程会走很多弯路,想找一个合适的方法学习。有这样想法是值得鼓励的,至少是知道怎么学习更好。我本人有些参考经验,可以吸取适用自己的地方。
先说下具体情况大学时期参加过全国的ACM 竞赛(不知道的可以百度查),经过层层选拔,学校竞赛拿一等奖,市竞赛一等奖,到清华参加最后的决赛荣获二等奖。
平时写代码都是很屌的那种,就是别人说要用什么库,什么库才能做好,自己用原生代码,几个方法就实现好了,也经常觉得公司里面代码写得就跟垃圾一样,看了都拉低智商,也不觉得有什么挑战(好在现在出来自由职业也不用顾忌说坏话), 说实话上班一天脑力劳动强度完全达不到ACM 比赛强度的1/3。
这强度是什么一个概念,清华比赛时候我用了4个小时只做出2道题就二等奖了(可能有人要说二等奖是不是有几个人,是的有几个人,共分为3等奖,一二三等奖全部人数加起来可能也只有总人数的1/10,想想那些去参加比赛的都是全国高校计算机专业层层选拔上来的精英)。在这里并不是吹嘘或者炫耀,想说明的是本人可以提供具有价值的建议 ,接下来才是重点。
计算机重点在于用已有的知识搭构建功能,而构建功能的步骤是固定的,只是需要掌握牢基础知识,并且提升自己的思考能力。思考能力也算是程序员的核心了(不是看,不是写,而是思考,如果照着别人代码写同时带上了思考,那么也是有效果的)。
学习基础知识:
1、数据结构,经典算法。可以根据学到的算法和数据结构解决书本习题后面的算法问题(注意不是看了解答过程再重复写一遍,而是在自己不知道情况下写一遍,代码量可能是只有十几行,写花不了多少时间,只是思考得花些时间——一定要坚持,我曾经思考了几天就为了解一道算法题,当然根据自己的情况,不用一下选这么难的。这里培养的是解决问题的思考能力)。
2、学会写递归,同时把递归变为循环实现相同的功能。(此处是完善思考能力,再提升一步)
当你学会前面2条的时候,即使你是第一次接触计算机,经过努力和学习掌握后水平已经超过了入门的同学,达到了中级的概念。这是内功,不是说你对某个语言运用自如了。武林高手比武比拼的是内功,外面掌握语言学习用法只是熟悉程度是外在的招式(这个非常容易掌握,多写几次就会)。
为什么开始就进入内功的修炼,因为万法归一,万变不离其宗,无论你以后学习什么语言,学了多少语言,刚进入的水平就是中级,一劳永逸。
后面只需要花点时间掌握语言的用法,方法调用,框架的使用,那么恭喜你,你的能力已经可以胜任大部分互联网公司的职位了。(这里得注意顺序,是先掌握了核心的算法和思想后才是熟悉语言本身)
下面是通往高手的进阶篇,只有在你掌握上面的东西后,才能开启下面的技能,不然容易走火入魔,我也帮不了你。**
1. 开发过程中多思考,多尝试新东西,思考是通往编程高手应该具备的基本素质。
这里还是思考,和上面还有不同。思考不是瞎思考,而是有深度思考,出色的程序员写代码的时间非常少,大部分都是在思考。给你一个功能,需要根据自己有的基础知识在脑海中想怎么实现合理,高效,想清楚后再写,而不是边写边改边想,那么水平永远都是止步不前的抑或进步和蜗牛一样。
当思考同一类问题,用的时间越来越少,那么侧面反映出水平提高了,可以试着思考更复杂的问题。思考需要循序渐进,不能一开始拿一个非常复杂的问题思考,而是在自己跳一下就能够到的高度。
对于在公司上班,你会发现思考时间越来越少,完全是需求到了就马上知道怎么写了。然后就是无聊听着公司领导介绍,开会讨论。但是不要忘了,自己得给自己找事做,停止思考或者习惯了某种思考模式后进步就会减慢,要进步就要不断尝试新东西,多思考。
2. 在脑海中提前构建程序,不要过分依赖调试工具和最后的结果。
很多程序员有一个通病,就是写一点,停下来运行看看效果,如果不对再接着改,再看效果,有不对的再接着改,如果中间遇到修改出来的bug,又得跳到去找问题排查bug。这种写法不仅浪费时间,而且水平提升很有限,当然初学者可以这样写,当自己熟悉起来后就不能一味重复用这样方法了。
比如产品经理给了一个ui图,给了一个后台功能,那么你就一口气写到底,在写的过程中不要进行任何的运行查看效果,而是在写的时候再脑海里面构建出程序的样子。写完后再运行,看问题和结果,此时会遇见bug,界面布局不对。第一步先别急着去改,而是思考自己写的时候哪里有问题,思考完以后再一步步改,当然此步可以放宽,可以边看边改。
刚开始用这种方法会很不适应,写出来的东西也有很多错误,只要坚持下去。不需要多久,你的能力就会得到质的提升。最理性的状态是写一遍,运行起来,完全是预期的样子,那么给你鼓鼓掌,你已经是顶尖程序员了。这样不仅能力提升了,还有另外一个好处,别人用4个小时时间才能写好功能,你可能一个小时不到就能写完,总之会比别人快很多倍。
剩下的时间,你可以听英语,看电影,想干嘛干嘛,升值加薪,老板听你的,即使老板吝啬不加,那么大可拍拍屁股走人,去给你开高工资的地方,此时你有的是底气不怕没人要。这里不是吹牛,等你试过了再来说是不是吹牛。
如果到了这一级,在互联网行业你会很吃香,工资最低也得1.5w每月起步(这还是非常非常保守了,在效益不好的企业),会被当做佛恭恭敬敬供养起来。
最后
这个路是自己的一些经验之谈,我指出了一条通往顶尖程序员的路,中间需要多久才能到最后这一级,就看个人努力程度和天赋了。不过我个人更看重努力,勤能补拙,天道酬勤。
阅读更多
相信自己,没有做不到的,只有想不到的
在这里获得的不仅仅是技术!
挖掘“好看”的底层逻辑 ☟ ☟ ☟